package controller.commoncontroller;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JOptionPane;

import model.editormodel.EditorModel;

/**
 * <b>Implementiert:</b> <code>ActionListener</code> <br>
 * <b>In Verbindung stehende Klassen:</b> <code>EditorModel</code><br>
 * <br>
 * Zugehoerige Controllerklasse zum Viewelement NewButton und dem Menueeintrag
 * <i>Neu</i>. Der Benutzer wird gefragt, ob die aktuelle Schaltung gespeichert
 * werden soll, anschliessend wird das <code>EditorModel</code> angestossen eine
 * neue Schaltung zu erzeugen.
 * 
 * @author Team Locsi
 * 
 */
public class NewCircuitListener implements ActionListener {

	private EditorModel eModel;

	/**
	 * Dieser Konstruktor erzeugt ein neues <code>NewCircuitListener</code> -
	 * Objekt.
	 * 
	 * @param eModel
	 *            <code>EditorModel</code> - Referenz auf das
	 *            <code>EditorModel</code>
	 */
	public NewCircuitListener(EditorModel eModel) {
		this.eModel = eModel;
	}

	/**
	 * Hier wird der Benutzer gefragt, ob die aktuelle Schaltung gespeichert
	 * werden soll, anschliessend wird das <code>EditorModel</code> angestossen
	 * eine neue Schaltung zu erzeugen.
	 */
	@Override
	public void actionPerformed(ActionEvent e) {

		// falls noch keine schaltung angelegt wurde, braucht die speichern
		// option nicht aufgerufen werden
		if (!this.eModel.isEmptyCircuit()) {
			// Gibt an, was User beim JDialog ausgewaehlt hat
			int askForSaveDialog = UtilityDialogs.askForSave(eModel,
					UtilityDialogs.XML_EXTENSION);

			// wenn User den Speichervorgang nicht abbricht, wird eine neue
			// Schaltung angelegt.
			if ((askForSaveDialog == JOptionPane.OK_OPTION)
					|| (askForSaveDialog == JOptionPane.NO_OPTION)) {
				eModel.newCircuit();
			}
		} else {
			eModel.newCircuit();
		}
	}
}